<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">hello</div>
  <script>
   let data = {
     msg:'hello',
     count:20
   }
   let vm = {}
   proxyData(data)
  function proxyData(data){
    Object.keys(data).forEach(key=>{
        Object.defineProperty(vm,key,{
        enumerable:true,
        configurable:true,
        get (){
          console.log('get',data[key])
          return data[key]
        },
        set (newValue){
          console.log('set:',newValue)
          if(newValue===data[key]){
            return 
          }
          data[key] = newValue
          document.querySelector("#app").textContent = data[key]
        }
      })
    })
  }
  
  vm.msg = 'hello word'
  vm.count = '22'
  console.log(vm.msg)
  console.log(vm.count)
  </script>
</body>
</html>